#ifndef UARTCFG_H
#define UARTCFG_H

#include <QDialog>
#include <QLineEdit>
#include <QMessageBox>
#include <QRegExp>
#include <QSerialPort>
#include <QSerialPortInfo>
#include <QTimer>

typedef struct {
  qint32 portNum;                    /* 串口号 */
  qint32 baudRate;                   /* 波特率 */
  QSerialPort::DataBits dataBits;    /* 数据位 */
  QSerialPort::Parity paritys;       /* 校验位 */
  QSerialPort::StopBits stopBits;    /* 停止位 */
  QSerialPort::FlowControl flowCtrl; /* 流控 */
} comcfg_t;

namespace Ui {
class uartCfg;
}

class uartCfg : public QDialog {
  Q_OBJECT

public:
  explicit uartCfg(QWidget *parent = nullptr);
  ~uartCfg();
  void setCfgPtr(comcfg_t);
signals:
  void setUartFinish(comcfg_t);

private slots:
  void setUiBaund(quint32 baund);
  void setUiDataBits(QSerialPort::DataBits da);
  void setUiStopBits(QSerialPort::StopBits da);
  void setUiParityBits(QSerialPort::Parity da);
  void setUiFlowBits(QSerialPort::FlowControl da);
  QStringList getComNum();
  void flushComList();
  void changedBaundIndex(int index);
  void on_falseButton_clicked();

  void on_okButton_clicked();

  void on_paritysBox_activated(int index);

  void on_datasBox_activated(int index);

  void on_stopsBox_activated(int index);
  void selectFlowCtrl();

  void on_baundBox_activated(const QString &arg1);

private:
  Ui::uartCfg *ui;
  comcfg_t curCfg;
  QTimer *flushCom;
};

#endif // UARTCFG_H
